package com.declum.archon.chunkserver.server;

import com.declum.archon.chunkserver.manager.IChunkManager;
import com.declum.archon.chunkserver.server.ds.PingInformation;

/**
 * This interface represent a Chunk server and gives the required interfaces for
 * a Chunk Server.
 * 
 * @author Clement
 * 
 */
public interface IChunkServer {
	/**
	 * Returns the {@link PingInformation} instance of the Chunk Server which
	 * will have required information for the client who is pinging
	 * 
	 * @return
	 */
	public PingInformation ping();

	/**
	 * Each chunk server will have a chunk manager associated with that. Using
	 * this method, we can get the Chunk Manger of the Chunk Server
	 * 
	 * @return
	 */
	public IChunkManager getChunkManager();

	/**
	 * It triggers the backup
	 */
	public void backup();

	/**
	 * It checks the health of each chunk
	 * 
	 * @param mode
	 */
	public void checkChunks(int mode);

	public String getClusterID();

	public String getName();

	public void setName(String name);
}
